package com.yyoo.doc.html.style;

import com.lowagie.text.Font;

import java.util.HashMap;
import java.util.Map;

/**
 * @author zzy
 *
 * 字体样式转换器
 */
public class FontStyleConverter extends StyleValueConverter<Integer>{

    private static final Map<String, Integer> fontStyleMap = new HashMap<>();

    /**
     * 支持的样式列表
     */
    private static final Map<String,Integer> SUPPORT_STYLES = new HashMap<>();

    static {
        // 支持的样式及其默认值
        SUPPORT_STYLES.put(StyleAttr.FONT_STYLE, Font.NORMAL);

        fontStyleMap.put("normal", Font.NORMAL);
        fontStyleMap.put("italic", Font.ITALIC);
        fontStyleMap.put("bold", Font.BOLD);
        fontStyleMap.put("bolditalic", Font.BOLDITALIC);
        fontStyleMap.put("underline", Font.UNDERLINE);
        fontStyleMap.put("strike", Font.STRIKETHRU);
    }

    @Override
    public boolean support(String styleKey) {
        return SUPPORT_STYLES.containsKey(styleKey);
    }

    @Override
    protected Integer defaultValue(String styleKey) {
        return SUPPORT_STYLES.get(styleKey);
    }

    @Override
    protected Integer convert(String styleValue) {

        if(styleValue == null){
            return null;
        }

        // fontStyle == null 样式的值不支持进行转换，将返回 defaultValue 方法默认值
        return fontStyleMap.get(styleValue.toLowerCase());
    }


}
